package com.hades.xq.single.java;

/**
 * 内部类式
 * 最后一种方式，不仅满足了懒加载、线程安全，代码也非常少，是非常推荐的一种方式。
 */
public class InnerStaticSingleton {
    private InnerStaticSingleton() {

    }

    private static class Holder {
        private static InnerStaticSingleton INSTANCE = new InnerStaticSingleton();
    }

    public static InnerStaticSingleton getInstance() {
        return Holder.INSTANCE;
    }

}
/**
 * 内部类Holder，里面有外部的实例。很多童鞋可能要问，
 * 这怎么就满足懒汉式和线程安全呢？当我们应用初始化时，
 * getInstance没有被调用，就没有实例对象，那就满足了懒汉式。
 * 当我们调用getInstance的时候，Java虚拟机为了保证类加载的安全性，
 * 所以这里就保证了线程安全。这种写法是不是惊呆了？那Kotlin又是怎么样写的呢？
 */